Streaming video over data networks (e.g., the Internet) has become increasingly popular as the availability of high-bandwidth Internet connections has increased. Video streaming refers to a type of video delivery mechanism where the data for the video is continuously delivered to a client device over a data network (e.g., the Internet) as the user is viewing the video. Video streaming allows a user to start viewing portions of the video without having to first download the entire video.
Pre-recorded video content or live video content can be streamed over the Internet using streaming protocols such as HTTP Live Streaming (HLS) and MPEG Dynamic Adaptive Streaming over HTTP (DASH). Such streaming protocols typically divide video content into a series of video segments and generate a streaming manifest file (also referred to as an index file) that references these video segments. A client device can interpret the streaming manifest file to fetch the video segments and seamlessly assemble the video segments to play the video content.
Timed metadata is used in existing video streaming systems to augment video streams with information that is specific to a particular point in time or a particular time range. This timed metadata can be included in the video segments themselves. However, this means that timed metadata is tied to specific video segments, which does not allow for individualized timed metadata for each playback session. One approach to individualize the timed metadata would be to store multiple copies of the video segments for each playback session, each having its own timed metadata embedded therein. However, this would quickly become untenable in terms of storage requirements as the number of playback sessions increases. Alternatively, with existing streaming protocols, timed metadata can be placed directly into streaming manifest files (e.g., HLS manifest file or DASH manifest file). This requires that the client side be able to properly interpret and process streaming manifest files that include timed metadata. Thus, for each platform, a playback module must be implemented that can properly interpret and process streaming manifest files that include timed metadata to perform video playback and any functions that utilize the timed metadata. Where such a playback module is implemented for a given platform, the way that the playback module uses the timed metadata is up to the entity that implemented the playback module. Where such a playback module is not implemented, any functionality that relies on timed metadata may not be performed.